<?php
/**
 * Fábrica de controles factory
 * instancia o controlador da página e armazena em propriedade interna para uso futuro
 *
 * @author cristiano
 */
class ControleFactory {
	/**
	 * Armazena a instancia singleton do objeto
	 * @var ControleFactory
	 */
	private static $instancia;

	/**
	 * Armazena a instancia do Controlador ativo no momento
	 * @var Controle
	 */
	private static $controle;

	/**
	 * Instancia o singleton do objeto
	 * @return ControleFactory
	 */	 
	public static function  GetInstancia(){
		if(!self::$instancia){
			self::$instancia = new ControleFactory();
		}
		return self::$instancia;
	}

	/**
	 * Gera o controlador com base na página solicitada pelo cliente
	 * 
	 * @return Controle
	 */
	public static function CriaControle(){
		if(!self::$controle){
			$sistema = sistema::GetInstancia();
			$nome_controle = ucfirst($sistema->GetPaginaAtual()->GetControle());

			$controle = new $nome_controle();

			if($controle != ''){ 
				self::$controle = $controle;
			}else return false;
		}

		return self::$controle;
	}

	/**
	 * Retorna o controlador previamente instanciado
	 * @return Controle
	 */
	public function GetControle(){
		if(self::$controle) return self::$controle;
	}
}